import api from './index';
import { ElMessageBox, ElMessage } from 'element-plus';
import { useStore } from 'vuex';
import { ref, onMounted, computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'

// 获取任务详情
export function getTaskDetail(taskId) {
  return api.get(`/tasks/${taskId}/detail`);
}

// 手动拆分任务
export function manualBreakdownTask(taskId, tasksData) {
  return api.post(`/tasks/${taskId}/manual-breakdown`, tasksData);
}

// 获取任务拆分版本列表
export function getTaskBreakdownVersions(taskId) {
  return api.get(`/tasks/${taskId}/breakdown-versions`);
}

// 获取特定拆分版本详情
export function getBreakdownVersionDetail(versionId) {
  return api.get(`/breakdown-versions/${versionId}`);
}

// 更新特定子任务
export function updateSubtask(subtaskId, updateData) {
  return api.put(`/subtasks/${subtaskId}`, updateData);
}

// 执行任务
export function executeTask(subtaskId, executor = 'manual', result = '') {
  return api.post(`/subtasks/${subtaskId}/execute`, { executor, result });
}

// 更新任务拆分版本状态
export function updateBreakdownVersionStatus(versionId, statusData) {
  return api.put(`/breakdown-versions/${versionId}/status`, statusData);
}

// 提交任务执行结果
export function submitExecutionResult(executionId, result) {
  return api.post(`/executions/${executionId}/result`, { result });
}

// 审核任务执行
export function reviewExecution(executionId, data) {
  return api.post(`/executions/${executionId}/review`, data);
}

// 回退任务执行
export function rollbackExecution(executionId, reason) {
  return api.post(`/executions/${executionId}/rollback`, { reason });
}

// 添加任务依赖关系
export function addTaskDependency(dependentTaskId, data) {
  return api.post(`/tasks/${dependentTaskId}/dependencies`, data);
}

// 获取任务依赖关系
export function getTaskDependencies(taskId) {
  return api.get(`/tasks/${taskId}/dependencies`);
}

// 移除任务依赖关系
export function removeTaskDependency(dependencyId) {
  return api.delete(`/tasks/dependencies/${dependencyId}`);
}

// 更新任务进度
export function updateTaskProgress(taskId, data) {
  return api.post(`/tasks/${taskId}/progress`, data);
}

// 获取任务进度历史
export function getTaskProgressHistory(taskId) {
  return api.get(`/tasks/${taskId}/progress/history`);
}

// 获取阻塞的任务列表
export function getBlockedTasks() {
  return api.get('/tasks/blocked');
}

// 获取任务的通知
export function getTaskNotifications(taskId) {
  return api.get(`/tasks/${taskId}/notifications`);
}

// 获取子任务详情
export function getSubtaskDetail(subtaskId) {
  return api.get(`/subtasks/${subtaskId}`);
}

// 添加子任务
export function addSubtask(subtaskData) {
  return api.post(`/subtasks`, subtaskData);
}

// 获取原子任务列表
export function getAtomicTasks() {
  return api.get('/tasks/atomic');
}

// 获取原子任务详情
export function getAtomicTaskDetail(atomicTaskId) {
  return api.get(`/tasks/atomic/${atomicTaskId}`);
}

// 删除子任务
export function deleteSubtask(subtaskId) {
  return api.delete(`/subtasks/${subtaskId}`);
}

// 通过拆分版本ID添加子任务
export function addSubtaskByVersion(versionId, subtaskData) {
  return api.post(`/breakdown-versions/${versionId}/subtasks`, subtaskData);
}

// 获取拆分版本下的所有子任务
export function getSubtasksByVersion(versionId) {
  return api.get(`/breakdown-versions/${versionId}/subtasks`);
}

// 批量更新子任务
export function batchUpdateSubtasks(subtasks) {
  return api.post(`/subtasks/batch-update`, { subtasks });
}

// 确认删除任务
const confirmDeleteTask = (task) => {
  ElMessageBox.confirm(
    `确定要删除任务"${task.title}"吗？删除后无法恢复。`,
    '删除确认',
    {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }
  ).then(async () => {
    try {
      await store.dispatch('deleteSubtask', {
        subtaskId: task.id,
        projectId: props.id
      });
      ElMessage.success('任务删除成功');
    } catch (error) {
      ElMessage.error(`删除失败: ${error.message}`);
    }
  }).catch(() => {
    // 用户取消删除操作
  });
};

// 激活任务拆分版本
export function activateBreakdownVersion(versionId) {
  return api.put(`/breakdown-versions/${versionId}/activate`);
}

// 删除任务拆分版本
export function deleteBreakdownVersion(versionId) {
  return api.delete(`/breakdown-versions/${versionId}`);
} 